import java.util.ArrayList;
import java.util.List;

public class Sistema {

	private List<Usuario> userList = new ArrayList<Usuario>();

	public Sistema() {

	}

	public void criarUsuario(String userName, String nome, String email,
			String senha, String telefone) throws Exception {
		for (int i = 0; i < userList.size(); i++) {
			if (userList.get(i).getUserName().equals(userName)) {
				throw new Exception("O username jah existe.");
			}
		}
		userList.add(new Usuario(userName, nome, email, senha, telefone));
	}

	public String getUsuarioPorNome(String nome, int indice) throws Exception {
		for (int i = 0; i < userList.size(); i++) {
			Usuario currentUser = userList.get(i);
			String str = currentUser.getNome();
			str.toLowerCase();
			nome.toLowerCase();
			if (str.contains(nome)) {
				return String.valueOf(i);
			}
		}
		throw new Exception("O usuario nao existe.");
	}

	public void atualizarUsuario(String id1, String atributo, String valor)
			throws Exception {
		if (atributo.equals("userName")) {
			throw new Exception("Nao eh permitido alterar o username.");
		}
		Integer id;
		try {
			id = Integer.parseInt(id1);
		} catch (Exception e) {
			throw new Exception("O usuario nao existe.");
		}
		if (id == null || id >= userList.size() || id < 0) {
			throw new Exception("O usuario nao existe.");
		}
		Usuario user = userList.get(id);
		if (user == null) {
			throw new Exception("O usuario nao existe.");
		}
		if (atributo.equals("nome")) {
			user.setNome(valor);
		} else if (atributo.equals("email")) {
			user.setEmail(valor);
		} else if (atributo.equals("telefone")) {
			user.setTelefone(valor);
		} else if (atributo.equals("senha")) {
			user.setSenha(valor);
		}
	}

	public String getAtributoUsuario(String id1, String atributo)
			throws Exception {
		Integer id = Integer.parseInt(id1);
		if (id < 0 || id >= userList.size() || id == null) {
			throw new Exception("O usuario nao existe.");
		}
		Usuario current = userList.get(id);
		if (current == null) {
			throw new Exception("O usuario nao existe.");
		}
		if (atributo.equals("nome")) {
			return current.getNome();
		} else if (atributo.equals("userName")) {
			return current.getUserName();
		} else if (atributo.equals("email")) {
			return current.getEmail();
		} else if (atributo.equals("telefone")) {
			return current.getTelefone();
		}
		return null;
	}

	public void removerUsuario(String id1) throws Exception {
		Integer id = Integer.parseInt(id1);
		if (id < 0 || id >= userList.size() || id == null) {
			throw new Exception("O usuario nao existe.");
		}
		int i = id;
		if (userList.get(i) == null) {
			throw new Exception("O usuario nao existe.");
		}
		userList.remove(i);
	}

	public void zerarSistema() {
		userList.clear();
	}

	public List<Usuario> getUserList() {
		return userList;
	}

	public void encerrarSistema() {
		// Implementar...
	}

}